#pragma once
#include <iostream>
#include <mutex>
#include <thread>
#include <cstring>  // 为了使用memcpy
#include <algorithm>  // 为了使用std::min
#include <chrono>  // 为了使用std::this_thread::sleep_for
#include <mutex>  // For std::mutex and std::lock_guard
#define BUFFER_SIZE 2048  // 定义环形缓冲区的大小
class Buffer {
public:
    // 构造函数，初始化缓冲区
    Buffer();

    // 向缓冲区写入数据
    bool write(const unsigned char* data, size_t len) ;

    // 从缓冲区读取数据
    size_t read(unsigned char* data, size_t len) ;

    // 判断缓冲区是否有数据
    int has_data();

private:
    size_t head;                  // 读指针
    size_t tail;                  // 写指针
    size_t count;                 // 当前缓冲区中的数据量
    unsigned char buffer[BUFFER_SIZE];  // 数据缓冲区（C风格数组）
    std::mutex mutex;             // 互斥锁，确保线程安全
};
